<?php

namespace admin\model;

use admin\model\Db;
/**
 * 公共模型类
 * 实现数据库链接和公共方法
 */
class Model{
    //数据库类的对象
    public $db = null;
    //缓存数据对象
    public $data = null;
    //构造方法
    public function __construct(){
        $this->init();   //数据库的链接
    }
    //链接数据库
    private function init(){
        $this->db = Db::getInstance();
    }
    
    //查询单条
    public function query($sql){
        return $this->db->fetch($sql);
    }

    //查询所有
    public function queryAll($sql){
        return $this->db->fetchAll($sql);
    }

    //更新
    //执行成功 返回插入的id
    //执行失败 返回404代码
    public function execute($sql){
        return $this->db->exec($sql);
    }

    //预处理语句
    public function p_execute($sql,$datas){
        $this->db->datas($this->filterArray($datas));       //设置数据
        $data = $this->db->prepare_execute($sql);
        return $data;
    }

    //将数组键名前加上冒号
    public function filterArray($data){
        $keys = array_keys($data);
        $array = [];
        for($i=0;$i<count($keys);$i++){
            $array[':'.$keys[$i]] = $data[$keys[$i]];
        }
        return $array;
    }

    public function p_query($sql,$datas){
        $this->db->datas($this->filterArray($datas));       //设置数据
        $data = $this->db->prepare_fetch($sql);
        return $data;
    }

    public function p_queryAll($sql,$datas){
        $this->db->datas($this->filterArray($datas));       //设置数据
        $data = $this->db->prepare_fetchAll($sql);
        return $data;
    }

}

